1. Field
The present invention relates to a system, deployment and program for managing resources.
2. Description of the Related Art
Computing systems often include one or more host computers (“hosts”) for processing data and running application programs, direct access storage devices (DASDs) for storing data, and a storage controller for controlling the transfer of data between the hosts and the DASD. Storage controllers, also referred to as control units or storage directors, manage access to a storage space often comprised of numerous hard disk drives connected in a loop architecture, otherwise referred to as a Direct Access Storage Device (DASD). Hosts may communicate Input/Output (I/O) requests to the storage space through the storage controller.
To maintain availability in the event of a failure, many storage controllers known in the prior art provide redundant hardware clusters. Each hardware cluster comprises a processor complex, cache, non-volatile storage (NVS), such as a battery backed-up Random Access Memory (RAM), and separate power supply to provide connection paths to the attached storage. The NVS in one cluster backs up write data from the cache in the other cluster so that if one cluster fails, the write data in the cache of the failed cluster is stored in the NVS of the surviving cluster. After one cluster fails, all Input/Output (I/O) requests would be directed toward the surviving cluster. When both clusters are available, each cluster may be assigned to handle I/O requests for specific logical storage devices configured within the physical storage devices.
In performing these and other tasks, a cluster can not only execute operations locally using the capabilities of the local cluster itself, but can also make a request to have an operation executed on a remote cluster in the storage controller system. Moreover, each storage controller may have an adapter to communicate over a network with a host computer or another storage controller. For example, the write instructions from the primary storage controller to a secondary storage controller may be generated by a processor of the adapter of the primary storage controller and issued over the network to the secondary storage controller.
There are numerous techniques for determining which portion or portions of a memory are cached in the cluster processor cache or adapter CPU cache. In many such techniques, the more frequently data is utilized in a cache, the more likely it will be retained in cache. Conversely, the longer data in cache remains unused, the more likely it is that the data will be overwritten with data from another memory location.
Many tasks have an associated data structure, often referred to as a task control block, in which operational parameters, status information and other data concerning the task may be stored. This data may be utilized not only in the performance of the task but also to diagnose problems should errors arise.
Each task or operation may consume a significant portion of the resources of the cluster or adapter which is performing the requested operation. These resources may include memory space, the bandwidth of a bus or the bandwidth of a network connection, as well as the computational capabilities of the processors of the cluster or adapter.
Various techniques have been used to manage the allocation of resources so that operations proceed in an appropriate fashion. For example, resources may be subdivided into allocation units which are placed in one or more queues. Thus, an allocation unit may be a portion of memory, a task control block, a portion of bus bandwidth, etc. In order for a task to execute, the appropriate resource allocation units are taken from the queues and allocated for use by that task. Upon completion or other termination of the task, the allocation units assigned that task are freed and returned to the appropriate queues for use by subsequent tasks.
In one known system, allocation units are allocated to new tasks from the top of the queue, and once the task ends, the freed allocation units are returned to the bottom of the queue. Thus, the least recently used allocation unit is the next one to be allocated. Such an arrangement can preserve the data associated with the allocation unit by delaying the reusage of that allocation unit. Thus, for example, if the allocation unit is a task control block, the data of that task control block may be preserved for problem diagnosis or other uses until that task control block reaches the top of the queue and is reused and its data overwritten.
On the other hand, if the allocation unit is a portion of memory containing data which has been cached in the cluster processor cache, such a delay in the reusage of the data stored in cache may cause that data to be flushed from cache before it can be utilized by another task. The likelihood of premature flushing of data from the cache increases as the length of the allocation unit queue increases.
In some systems, the length of the allocation unit queue may be restricted to increase cache usage efficiency. If the number of allocation units available to be allocated from the queue is insufficient to meet the demand for allocation units, the allocation of the resource allocation units may be rationed by queuing the tasks themselves in various types of queues to await the availability of allocation units needed for task execution.
Another known approach is to not only assign allocation units to new tasks from the top of the queue, but also, once the task ends, to return the freed allocation units to the top of the queue. Thus, the most recently used allocation unit is the next one to be allocated. Such an arrangement can increase cache efficiency. However, the preservation of historical data associated with the allocation unit may be adversely affected by the rapid reusage of that allocation unit.